package com.etoak.common.jwt;

import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.security.Keys;

import javax.crypto.SecretKey;
import java.util.Date;
import java.util.Map;

public class JwtUtil {
    //256bite/8=32  个字节
    public static final String KEY_STR="11111111111111111111111111111111";
    /**
     * 获取密钥
     */
    private  static final SecretKey SECRET_KEY= Keys.hmacShaKeyFor(KEY_STR.getBytes());

    public static final long EXPIRE=1000*60*60*12;

    public static String create(Map<String, Object> claimsMap){
        Date now=new Date();
        return Jwts.builder()
                .signWith(SECRET_KEY)
                .setClaims(claimsMap)//
                .setIssuedAt(now)//签发时间
                .setExpiration(new Date(now.getTime()+EXPIRE))
                .compact();
    }
    /**
     * 解析JWT令牌并返回其声明部分作为Map对象。
     * @param token JWT令牌字符串
     * @return 包含令牌声明部分的Map对象
     */
    public static Map<String,Object> parse(String token){
        return Jwts.parserBuilder()
                .setSigningKey(SECRET_KEY)
                .build()
                .parseClaimsJws(token)
                .getBody();


    }


}
